package com.ssy.lingxi.marketing.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.marketing.model.vo.activity.request.*;
import com.ssy.lingxi.marketing.model.vo.activity.response.*;
import com.ssy.lingxi.marketing.model.vo.common.request.CommonIdReq;
import com.ssy.lingxi.marketing.model.vo.coupon.request.FilterSkuIdRequest;
import com.ssy.lingxi.marketing.model.vo.coupon.request.FilterSkuIdResponse;

import java.util.List;

/**
 * 商家活动服务类
 * @author yzc
 * @version 2.0.0
 * @date 2021/8/17
 */
public interface IMerchantActivityService {

    /**
     * 营销活动查询 - 分页列表
     * @param loginUser 登录用户信息
     * @param pageVO 接口参数
     * @return 返回结果
     */
    Wrapper<PageData<MerchantActivitySummaryPageResp>> pageSummary(UserLoginCacheDTO loginUser, MerchantActivityCommonPageVO pageVO);

    /**
     * 待提交审核营销活动 - 分页列表
     * @param loginUser 登录用户信息
     * @param pageVO 接口参数
     * @return 返回结果
     */
    Wrapper<PageData<MerchantActivitySubmitExamPageResp>> pageByToBeSubmitExam(UserLoginCacheDTO loginUser, MerchantActivityCommonPageVO pageVO);

    /**
     * 待审核营销活动(一级) - 分页列表
     * @param loginUser 登录用户信息
     * @param pageVO 接口参数
     * @return 返回结果
     */
    Wrapper<PageData<MerchantActivityExamPageResp>> pageByExamineStep1(UserLoginCacheDTO loginUser, MerchantActivityCommonPageVO pageVO);

    /**
     * 待审核营销活动 (二级) - 分页列表
     * @param loginUser 登录用户信息
     * @param pageVO 接口参数
     * @return 返回结果
     */
    Wrapper<PageData<MerchantActivityExamPageResp>> pageByExamineStep2(UserLoginCacheDTO loginUser, MerchantActivityCommonPageVO pageVO);

    /**
     * 待提交营销活动 - 分页列表
     * @param loginUser 登录用户信息
     * @param pageVO 接口参数
     * @return 返回结果
     */
    Wrapper<PageData<MerchantActivitySubmitPageResp>> pageByToBeSubmit(UserLoginCacheDTO loginUser, MerchantActivityCommonPageVO pageVO);

    /**
     * 待上线营销活动 - 分页列表
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<MerchantActivityOnlinePageResp>> pageByToBeOnline(UserLoginCacheDTO loginUser, MerchantActivityCommonPageVO pageVO);

    /**
     * 查询商家活动
     * @param request 接口参数
     * @return 返回结果
     */
    Wrapper<MerchantActivityDetailResp> detail(UserLoginCacheDTO loginUser, CommonIdReq request);

    /**
     * 查询商家活动基本信息
     * @param loginUser
     * @param request
     * @return
     */
    Wrapper<MerchantActivityDetailResp> getBaseDetail(UserLoginCacheDTO loginUser, CommonIdReq request);
    /**
     * 营销活动查询 - 活动详情 - 活动商品(分页)
     * @param loginUser 登录用户信息
     * @param pageVO 接口参数
     * @return 返回结果
     */
    Wrapper<PageData<McActivityGoodsPageResp>> pageByActivityGoods(UserLoginCacheDTO loginUser, PfActivityGoodsPageReq pageVO);

    /**
     * 待新增商家营销活动 - 新增
     * @param loginUser 登录用户信息
     * @param request 接口参数
     * @return 返回结果
     */
    Wrapper<Void> saveMerchantActivity(UserLoginCacheDTO loginUser, MerchantActivityAddReq request);

    /**
     * 新增商家营销活动 - 修改
     * @param loginUser 登录用户信息
     * @param request 接口参数
     * @return 返回结果
     */
    Wrapper<Void> updateMerchantActivity(UserLoginCacheDTO loginUser, MerchantActivityUpdateReq request);

    /**
     * 待新增商家营销活动 - 查询活动商品过滤的skuId
     * @param loginUser 登录用户信息
     * @param request 接口参数
     * @return 返回结果
     */
    Wrapper<FilterSkuIdResponse> getFilterSkuId(UserLoginCacheDTO loginUser, FilterSkuIdRequest request);

    /**
     * 待提交审核营销活动 - 批量删除
     * @param loginUser 登录用户信息
     * @param idList 活动id
     * @return 返回结果
     */
    Wrapper<Void> batchDelete(UserLoginCacheDTO loginUser, List<Long> idList);

    /**
     * 待提交审核营销活动 - 提交审核
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> submitExamine(UserLoginCacheDTO loginUser, List<Long> idList);

    /**
     * 待审核营销活动 (一级) - 审核
     * @param loginUser 登录用户信息
     * @param request 接口参数
     * @return 返回结果
     */
    Wrapper<Void> examineStep1Update(UserLoginCacheDTO loginUser, ActivityExamineReq request);

    /**
     * 待审核营销活动 (一级) - 批量审核
     * @param loginUser 登录用户信息
     * @param request 接口参数
     * @return 返回结果
     */
    Wrapper<Void> batchExamineStep1Update(UserLoginCacheDTO loginUser, CommonIdsReq request);

    /**
     * 待审核营销活动 (二级) - 审核
     * @param loginUser 登录用户信息
     * @param request 接口参数
     * @return 返回结果
     */
    Wrapper<Void> examineStep2Update(UserLoginCacheDTO loginUser, ActivityExamineReq request);

    /**
     * 待审核营销活动 (二级) - 批量审核
     * @param loginUser 登录用户信息
     * @param request 接口参数
     * @return 返回结果
     */
    Wrapper<Void> batchExamineStep2Update(UserLoginCacheDTO loginUser, CommonIdsReq request);

    /**
     * 待提交营销活动 (二级) -  提交
     * @param loginUser 登录用户信息
     * @param idList 活动id
     * @return 返回结果
     */
    Wrapper<Void> submit(UserLoginCacheDTO loginUser, List<Long> idList);

    /**
     * 待上线营销活动 - 上线活动
     * @param loginUser 登录用户信息
     * @param idList 活动id
     * @return 返回结果
     */
    Wrapper<Void> onlineUpdate(UserLoginCacheDTO loginUser, List<Long> idList);

    /**
     * 营销活动查询 - 终止
     * @param loginUser 登录用户信息
     * @param request 接口参数
     * @return 返回结果
     */
    Wrapper<Void> stop(UserLoginCacheDTO loginUser, ActivityActionReq request);

    /**
     * 营销活动查询 - 重新启动
     * @param loginUser 登录用户信息
     * @param request 接口参数
     * @return 返回结果
     */
    Wrapper<Void> restart(UserLoginCacheDTO loginUser, ActivityActionReq request);
}
